ヘッダーをスキップ
Oracle TimesTen Replication - TimesTen to TimesTen開発者および管理者ガイド
リリース7.0
E05169-01
  目次へ
目次
索引へ
索引

前へ
前へ
次へ
次へ
 

順序のレプリケート

レプリケーションを使用すると、サブスクライバ・データ・ストアの順序の現在値が常にマスター・データ・ストアの現在値より大きくなるようにすることができます。これによって、後で順序を使用してサブスクライバ・データ・ストアに直接更新を行っても、競合は発生しなくなります。たとえば、順序を使用してレプリケート表の主キー値を決定するアプリケーション、およびマスター・データ・ストアで障害が発生した場合にマスターの役割を果たす必要があるホット・スタンバイ・データ・ストアが含まれている構成があるとします。順序をレプリケートすると、直接更新するデータ・ストアがいずれのデータ・ストアであるかに関係なく、同じ順序値が2回使用されないことを保証できます。

順序のレプリケーションは、新しい現在値をマスター・データ・ストアからサブスクライバに送信すると実行されます。これは、順序のNEXTVALを初めて参照すると実行され、その後は、20参照ごとに実行されます。たとえば、MINVALUEが1で、INCREMENTが2の順序my.seqについて考えてみます。トランザクションでmy.seq.NEXTVALを初めて使用すると、マスター・データ・ストアの順序の現在値は3に変更され、新しい現在値41がサブスクライバにレプリケートされます。マスター・データ・ストアのmy.seq.NEXTVALへの次の19回の参照では、サブスクライバ・データ・ストアの現在値41がマスターの現在値より大きいため、新しい現在値のレプリケートは行われません。my.seq.NEXTVALへの21回目の参照のみが、新しい現在値61をサブスクライバ・データ・ストアに送信します。これは、前回レプリケートされたサブスクライバの現在値41が、この時点でマスターの現在値43より小さくなるためです。

順序のレプリケーションには、次の制限があります。

いずれかのピアで更新が行われる双方向レプリケーション・スキームで順序を使用する必要がある場合は、各データ・ストアで、異なるMINVALUEおよびMAXVALUE属性が指定された、レプリケートされない順序をかわりに使用できます。たとえば、MINVALUEが1で、MAXVALUEが100の順序my.seqをデータ・ストアDS1に作成し、MINVALUEが101で、MAXVALUEが200の同じ順序をDS2に作成するとします。この場合、DS1およびDS2を双方向レプリケーション・スキームで構成すると、順序my.seqを使用して、いずれのデータ・ストアに対しても順序値が競合しないことを保証して更新を行うことができます。この構成でttRepAdmin -duplicateを使用して障害からリカバリする場合は、複製を実行した後で順序を削除し、新しいMINVALUEおよびMAXVALUEを指定して順序を再作成する必要があることに注意してください。


注意: レプリケートする順序は、レプリケート表と組み合せて使用することが前提とされています。したがって、順序の更新のレプリケートは、順序の更新後にレプリケート表への更新が実行される場合、または順序の更新がレプリケート表で使用される場合にのみ実行されます。SELECT my.seq.NEXTVAL FROM sys.dualなどの順序に対する操作では、順序値は増加しますが、レプリケートされる表への更新をその後に行うまでレプリケートは実行されません。この動作には、レプリケートされる表への更新をその後に行うまでこれらの順序の更新がログからパージされないという副作用があります。このため、これらの順序の更新のみがログの末尾に存在する場合は、ttRepSubscriberWaitおよびttRepAdmin -waitで障害が発生します。

順序を含めるレプリケーション・スキームの構成方法の詳細は、「レプリケーション要素の定義」を参照してください。